home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / AIncludes / QD3DView.a < prev    next >
Encoding:
Text File  |  1998-08-17  |  16.3 KB  |  530 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        QD3DView.a
  3. ;
  4. ;    Contains:    View types and routines                                            
  5. ;
  6. ;    Version:    Technology:    Quickdraw 3D 1.5.4
  7. ;                Release:    Universal Interfaces 3.2
  8. ;
  9. ;    Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__QD3DVIEW__') = 'UNDEFINED' THEN
  18. __QD3DVIEW__ SET 1
  19.  
  20.     IF &TYPE('__QD3D__') = 'UNDEFINED' THEN
  21.     include 'QD3D.a'
  22.     ENDIF
  23.  
  24.     IF &TYPE('__QD3DSTYLE__') = 'UNDEFINED' THEN
  25.     include 'QD3DStyle.a'
  26.     ENDIF
  27.     IF &TYPE('__QD3DSET__') = 'UNDEFINED' THEN
  28.     include 'QD3DSet.a'
  29.     ENDIF
  30.  
  31. ; ******************************************************************************
  32. ; **                                                                             **
  33. ; **                        View Type Definitions                                 **
  34. ; **                                                                             **
  35. ; ****************************************************************************
  36.  
  37.  
  38. ; typedef long                            TQ3ViewStatus
  39. kQ3ViewStatusDone                EQU        0
  40. kQ3ViewStatusRetraverse            EQU        1
  41. kQ3ViewStatusError                EQU        2
  42. kQ3ViewStatusCancelled            EQU        3
  43.  
  44. ; ******************************************************************************
  45. ; **                                                                             **
  46. ; **                        Default Attribute Set                                 **
  47. ; **                                                                             **
  48. ; ****************************************************************************
  49.  
  50.  
  51. ; ******************************************************************************
  52. ; **                                                                             **
  53. ; **                            View Routines                                     **
  54. ; **                                                                             **
  55. ; ****************************************************************************
  56.  
  57. ;
  58. ; extern TQ3ViewObject Q3View_New(void )
  59. ;
  60.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  61.         IMPORT_CFM_FUNCTION Q3View_New
  62.     ENDIF
  63.  
  64. ;
  65. ; extern TQ3Status Q3View_Cancel(TQ3ViewObject view)
  66. ;
  67.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  68.         IMPORT_CFM_FUNCTION Q3View_Cancel
  69.     ENDIF
  70.  
  71. ; ******************************************************************************
  72. ; **                                                                             **
  73. ; **                        View Rendering routines                                 **
  74. ; **                                                                             **
  75. ; ****************************************************************************
  76.  
  77. ;
  78. ; extern TQ3Status Q3View_SetRendererByType(TQ3ViewObject view, TQ3ObjectType theType)
  79. ;
  80.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  81.         IMPORT_CFM_FUNCTION Q3View_SetRendererByType
  82.     ENDIF
  83.  
  84. ;
  85. ; extern TQ3Status Q3View_SetRenderer(TQ3ViewObject view, TQ3RendererObject renderer)
  86. ;
  87.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  88.         IMPORT_CFM_FUNCTION Q3View_SetRenderer
  89.     ENDIF
  90.  
  91. ;
  92. ; extern TQ3Status Q3View_GetRenderer(TQ3ViewObject view, TQ3RendererObject *renderer)
  93. ;
  94.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  95.         IMPORT_CFM_FUNCTION Q3View_GetRenderer
  96.     ENDIF
  97.  
  98. ;
  99. ; extern TQ3Status Q3View_StartRendering(TQ3ViewObject view)
  100. ;
  101.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  102.         IMPORT_CFM_FUNCTION Q3View_StartRendering
  103.     ENDIF
  104.  
  105. ;
  106. ; extern TQ3ViewStatus Q3View_EndRendering(TQ3ViewObject view)
  107. ;
  108.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  109.         IMPORT_CFM_FUNCTION Q3View_EndRendering
  110.     ENDIF
  111.  
  112. ;
  113. ; extern TQ3Status Q3View_Flush(TQ3ViewObject view)
  114. ;
  115.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  116.         IMPORT_CFM_FUNCTION Q3View_Flush
  117.     ENDIF
  118.  
  119. ;
  120. ; extern TQ3Status Q3View_Sync(TQ3ViewObject view)
  121. ;
  122.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  123.         IMPORT_CFM_FUNCTION Q3View_Sync
  124.     ENDIF
  125.  
  126.  
  127. ; ******************************************************************************
  128. ; **                                                                             **
  129. ; **                        View/Bounds/Pick routines                             **
  130. ; **                                                                             **
  131. ; ****************************************************************************
  132.  
  133. ;
  134. ; extern TQ3Status Q3View_StartBoundingBox(TQ3ViewObject view, TQ3ComputeBounds computeBounds)
  135. ;
  136.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  137.         IMPORT_CFM_FUNCTION Q3View_StartBoundingBox
  138.     ENDIF
  139.  
  140. ;
  141. ; extern TQ3ViewStatus Q3View_EndBoundingBox(TQ3ViewObject view, TQ3BoundingBox *result)
  142. ;
  143.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  144.         IMPORT_CFM_FUNCTION Q3View_EndBoundingBox
  145.     ENDIF
  146.  
  147. ;
  148. ; extern TQ3Status Q3View_StartBoundingSphere(TQ3ViewObject view, TQ3ComputeBounds computeBounds)
  149. ;
  150.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  151.         IMPORT_CFM_FUNCTION Q3View_StartBoundingSphere
  152.     ENDIF
  153.  
  154. ;
  155. ; extern TQ3ViewStatus Q3View_EndBoundingSphere(TQ3ViewObject view, TQ3BoundingSphere *result)
  156. ;
  157.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  158.         IMPORT_CFM_FUNCTION Q3View_EndBoundingSphere
  159.     ENDIF
  160.  
  161. ;
  162. ; extern TQ3Status Q3View_StartPicking(TQ3ViewObject view, TQ3PickObject pick)
  163. ;
  164.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  165.         IMPORT_CFM_FUNCTION Q3View_StartPicking
  166.     ENDIF
  167.  
  168. ;
  169. ; extern TQ3ViewStatus Q3View_EndPicking(TQ3ViewObject view)
  170. ;
  171.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  172.         IMPORT_CFM_FUNCTION Q3View_EndPicking
  173.     ENDIF
  174.  
  175.  
  176. ; ******************************************************************************
  177. ; **                                                                             **
  178. ; **                            View/Camera routines                             **
  179. ; **                                                                             **
  180. ; ****************************************************************************
  181.  
  182. ;
  183. ; extern TQ3Status Q3View_GetCamera(TQ3ViewObject view, TQ3CameraObject *camera)
  184. ;
  185.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  186.         IMPORT_CFM_FUNCTION Q3View_GetCamera
  187.     ENDIF
  188.  
  189. ;
  190. ; extern TQ3Status Q3View_SetCamera(TQ3ViewObject view, TQ3CameraObject camera)
  191. ;
  192.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  193.         IMPORT_CFM_FUNCTION Q3View_SetCamera
  194.     ENDIF
  195.  
  196.  
  197. ; ******************************************************************************
  198. ; **                                                                             **
  199. ; **                            View/Lights routines                             **
  200. ; **                                                                             **
  201. ; ****************************************************************************
  202.  
  203. ;
  204. ; extern TQ3Status Q3View_SetLightGroup(TQ3ViewObject view, TQ3GroupObject lightGroup)
  205. ;
  206.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  207.         IMPORT_CFM_FUNCTION Q3View_SetLightGroup
  208.     ENDIF
  209.  
  210. ;
  211. ; extern TQ3Status Q3View_GetLightGroup(TQ3ViewObject view, TQ3GroupObject *lightGroup)
  212. ;
  213.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  214.         IMPORT_CFM_FUNCTION Q3View_GetLightGroup
  215.     ENDIF
  216.  
  217.  
  218. ; ******************************************************************************
  219. ; **                                                                             **
  220. ; **                                Idle Method                                     **
  221. ; **                                                                             **
  222. ; ****************************************************************************
  223.  
  224. ; *    The idle methods allow the application to register callback routines 
  225. ; *    which will be called by the view during especially long operations.
  226. ; *
  227. ; *    The idle methods may also be used to interrupt long renderings or
  228. ; *    traversals.  Inside    the idler callback the application can check for
  229. ; *    Command-Period, Control-C or clicking a "Cancel" button or whatever else
  230. ; *    may be used to let the user interrupt rendering.    
  231. ; *
  232. ; *    It is NOT LEGAL to call QD3D routines inside an idler callback.
  233. ; *
  234. ; *    Return kQ3Failure to cancel rendering, kQ3Success to continue. Don't
  235. ; *    bother posting an error.
  236. ; *
  237. ; *    Q3View_SetIdleMethod registers a callback that can be called
  238. ; *    by the system during rendering.  Unfortunately there is no way yet
  239. ; *    to set timer intervals when you want to be called.  Basically, it is
  240. ; *    up to the application's idler callback to check clocks to see if you
  241. ; *    were called back only a millisecond ago or an hour ago!
  242. ; *
  243. ; *    Q3View_SetIdleProgressMethod registers a callback that also gives
  244. ; *    progress information. This information is supplied by the renderer, and
  245. ; *    may or may not be based on real time.
  246. ; *
  247. ; *    If a renderer doesn't support the progress method, your method will be
  248. ; *    called with current == 0 and completed == 0.
  249. ; *    
  250. ; *    Otherwise, you are GUARANTEED to get called at least 2 or more times:
  251. ; *    
  252. ; *    ONCE            idleMethod(view, 0, n)        -> Initialize, Show Dialog
  253. ; *    zero or more    idleMethod(view, 1..n-1, n) -> Update progress
  254. ; *    ONCE            idleMethod(view, n, n)        -> Exit, Hide Dialog
  255. ; *    
  256. ; *    "current" is guaranteed to be less than or equal to "completed"
  257. ; *    "completed" may change values, but current/complete always indicates
  258. ; *    the degree of completion.
  259. ; *
  260. ; *    The calling conventions aid in managing any data associated with a 
  261. ; *    progress user interface indicator.
  262.  
  263. ;
  264. ; extern TQ3Status Q3View_SetIdleMethod(TQ3ViewObject view, TQ3ViewIdleMethod idleMethod, const void *idleData)
  265. ;
  266.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  267.         IMPORT_CFM_FUNCTION Q3View_SetIdleMethod
  268.     ENDIF
  269.  
  270. ;
  271. ; extern TQ3Status Q3View_SetIdleProgressMethod(TQ3ViewObject view, TQ3ViewIdleProgressMethod idleMethod, const void *idleData)
  272. ;
  273.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  274.         IMPORT_CFM_FUNCTION Q3View_SetIdleProgressMethod
  275.     ENDIF
  276.  
  277.  
  278. ; ******************************************************************************
  279. ; **                                                                             **
  280. ; **                                EndFrame Method                                 **
  281. ; **                                                                             **
  282. ; ****************************************************************************
  283.  
  284. ; *    The end frame method is an alternate way of determining when an
  285. ; *    asynchronous renderer has completed rendering a frame. It differs from
  286. ; *    Q3View_Sync in that notification of the frame completion is the opposite
  287. ; *    direction. 
  288. ; *    
  289. ; *    With Q3View_Sync the application asks a renderer to finish rendering
  290. ; *    a frame, and blocks until the frame is complete.
  291. ; *    
  292. ; *    With the EndFrame method, the renderer tells the application that is has
  293. ; *    completed a frame.
  294. ; *
  295. ; *    If "Q3View_Sync" is called BEFORE this method has been called, this
  296. ; *    method will NOT be called ever.
  297. ; *    
  298. ; *    If "Q3View_Sync" is called AFTER this method has been called, the
  299. ; *    call will return immediately (as the frame has already been completed).
  300.  
  301. ;
  302. ; extern TQ3Status Q3View_SetEndFrameMethod(TQ3ViewObject view, TQ3ViewEndFrameMethod endFrame, void *endFrameData)
  303. ;
  304.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  305.         IMPORT_CFM_FUNCTION Q3View_SetEndFrameMethod
  306.     ENDIF
  307.  
  308.  
  309. ; ******************************************************************************
  310. ; **                                                                             **
  311. ; **                            Push/Pop routines                                 **
  312. ; **                                                                             **
  313. ; ****************************************************************************
  314.  
  315. ;
  316. ; extern TQ3Status Q3Push_Submit(TQ3ViewObject view)
  317. ;
  318.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  319.         IMPORT_CFM_FUNCTION Q3Push_Submit
  320.     ENDIF
  321.  
  322. ;
  323. ; extern TQ3Status Q3Pop_Submit(TQ3ViewObject view)
  324. ;
  325.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  326.         IMPORT_CFM_FUNCTION Q3Pop_Submit
  327.     ENDIF
  328.  
  329.  
  330. ; ******************************************************************************
  331. ; **                                                                             **
  332. ; **        Check if bounding box is visible in the viewing frustum.  Transforms **
  333. ; **        the bbox by the current local_to_world transformation matrix and     **
  334. ; **        does a clip test to see if it lies in the viewing frustum.             **
  335. ; **        This can be used by applications to cull out large chunks of scenes     **
  336. ; **        that are not going to be visible.                                     **
  337. ; **                                                                             **
  338. ; **        The default implementation is to always return kQ3True.  Renderers     **
  339. ; **        may override this routine however to do the checking.                 **
  340. ; **                                                                             **
  341. ; ****************************************************************************
  342.  
  343. ;
  344. ; extern TQ3Boolean Q3View_IsBoundingBoxVisible(TQ3ViewObject view, const TQ3BoundingBox *bbox)
  345. ;
  346.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  347.         IMPORT_CFM_FUNCTION Q3View_IsBoundingBoxVisible
  348.     ENDIF
  349.  
  350.  
  351. ; ******************************************************************************
  352. ; **                                                                             **
  353. ; **                            DrawContext routines                             **
  354. ; **                                                                             **
  355. ; ****************************************************************************
  356.  
  357. ;
  358. ; extern TQ3Status Q3View_SetDrawContext(TQ3ViewObject view, TQ3DrawContextObject drawContext)
  359. ;
  360.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  361.         IMPORT_CFM_FUNCTION Q3View_SetDrawContext
  362.     ENDIF
  363.  
  364. ;
  365. ; extern TQ3Status Q3View_GetDrawContext(TQ3ViewObject view, TQ3DrawContextObject *drawContext)
  366. ;
  367.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  368.         IMPORT_CFM_FUNCTION Q3View_GetDrawContext
  369.     ENDIF
  370.  
  371.  
  372. ; ******************************************************************************
  373. ; **                                                                             **
  374. ; **                            Graphics State routines                             **
  375. ; **                                                                             **
  376. ; ** The graphics state routines can only be called while rendering (ie. in     **
  377. ; ** between calls to start and end rendering calls).  If they are called     **
  378. ; ** outside of a rendering loop, they will return with error.                 **
  379. ; **                                                                             **
  380. ; ****************************************************************************
  381.  
  382. ; ******************************************************************************
  383. ; **                                                                             **
  384. ; **                            Transform routines                                 **
  385. ; **                                                                             **
  386. ; ****************************************************************************
  387.  
  388. ;
  389. ; extern TQ3Status Q3View_GetLocalToWorldMatrixState(TQ3ViewObject view, TQ3Matrix4x4 *matrix)
  390. ;
  391.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  392.         IMPORT_CFM_FUNCTION Q3View_GetLocalToWorldMatrixState
  393.     ENDIF
  394.  
  395. ;
  396. ; extern TQ3Status Q3View_GetWorldToFrustumMatrixState(TQ3ViewObject view, TQ3Matrix4x4 *matrix)
  397. ;
  398.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  399.         IMPORT_CFM_FUNCTION Q3View_GetWorldToFrustumMatrixState
  400.     ENDIF
  401.  
  402. ;
  403. ; extern TQ3Status Q3View_GetFrustumToWindowMatrixState(TQ3ViewObject view, TQ3Matrix4x4 *matrix)
  404. ;
  405.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  406.         IMPORT_CFM_FUNCTION Q3View_GetFrustumToWindowMatrixState
  407.     ENDIF
  408.  
  409.  
  410. ; ******************************************************************************
  411. ; **                                                                             **
  412. ; **                            Style state routines                             **
  413. ; **                                                                             **
  414. ; ****************************************************************************
  415.  
  416. ;
  417. ; extern TQ3Status Q3View_GetBackfacingStyleState(TQ3ViewObject view, TQ3BackfacingStyle *backfacingStyle)
  418. ;
  419.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  420.         IMPORT_CFM_FUNCTION Q3View_GetBackfacingStyleState
  421.     ENDIF
  422.  
  423. ;
  424. ; extern TQ3Status Q3View_GetInterpolationStyleState(TQ3ViewObject view, TQ3InterpolationStyle *interpolationType)
  425. ;
  426.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  427.         IMPORT_CFM_FUNCTION Q3View_GetInterpolationStyleState
  428.     ENDIF
  429.  
  430. ;
  431. ; extern TQ3Status Q3View_GetFillStyleState(TQ3ViewObject view, TQ3FillStyle *fillStyle)
  432. ;
  433.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  434.         IMPORT_CFM_FUNCTION Q3View_GetFillStyleState
  435.     ENDIF
  436.  
  437. ;
  438. ; extern TQ3Status Q3View_GetHighlightStyleState(TQ3ViewObject view, TQ3AttributeSet *highlightStyle)
  439. ;
  440.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  441.         IMPORT_CFM_FUNCTION Q3View_GetHighlightStyleState
  442.     ENDIF
  443.  
  444. ;
  445. ; extern TQ3Status Q3View_GetSubdivisionStyleState(TQ3ViewObject view, TQ3SubdivisionStyleData *subdivisionStyle)
  446. ;
  447.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  448.         IMPORT_CFM_FUNCTION Q3View_GetSubdivisionStyleState
  449.     ENDIF
  450.  
  451. ;
  452. ; extern TQ3Status Q3View_GetOrientationStyleState(TQ3ViewObject view, TQ3OrientationStyle *fontFacingDirectionStyle)
  453. ;
  454.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  455.         IMPORT_CFM_FUNCTION Q3View_GetOrientationStyleState
  456.     ENDIF
  457.  
  458. ;
  459. ; extern TQ3Status Q3View_GetReceiveShadowsStyleState(TQ3ViewObject view, TQ3Boolean *receives)
  460. ;
  461.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  462.         IMPORT_CFM_FUNCTION Q3View_GetReceiveShadowsStyleState
  463.     ENDIF
  464.  
  465. ;
  466. ; extern TQ3Status Q3View_GetPickIDStyleState(TQ3ViewObject view, unsigned long *pickIDStyle)
  467. ;
  468.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  469.         IMPORT_CFM_FUNCTION Q3View_GetPickIDStyleState
  470.     ENDIF
  471.  
  472. ;
  473. ; extern TQ3Status Q3View_GetPickPartsStyleState(TQ3ViewObject view, TQ3PickParts *pickPartsStyle)
  474. ;
  475.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  476.         IMPORT_CFM_FUNCTION Q3View_GetPickPartsStyleState
  477.     ENDIF
  478.  
  479. ;
  480. ; extern TQ3Status Q3View_GetAntiAliasStyleState(TQ3ViewObject view, TQ3AntiAliasStyleData *antiAliasData)
  481. ;
  482.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  483.         IMPORT_CFM_FUNCTION Q3View_GetAntiAliasStyleState
  484.     ENDIF
  485.  
  486.  
  487. ; ******************************************************************************
  488. ; **                                                                             **
  489. ; **                        Attribute state routines                             **
  490. ; **                                                                             **
  491. ; ****************************************************************************
  492.  
  493. ;
  494. ; extern TQ3Status Q3View_GetDefaultAttributeSet(TQ3ViewObject view, TQ3AttributeSet *attributeSet)
  495. ;
  496.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  497.         IMPORT_CFM_FUNCTION Q3View_GetDefaultAttributeSet
  498.     ENDIF
  499.  
  500. ;
  501. ; extern TQ3Status Q3View_SetDefaultAttributeSet(TQ3ViewObject view, TQ3AttributeSet attributeSet)
  502. ;
  503.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  504.         IMPORT_CFM_FUNCTION Q3View_SetDefaultAttributeSet
  505.     ENDIF
  506.  
  507.  
  508. ;
  509. ; extern TQ3Status Q3View_GetAttributeSetState(TQ3ViewObject view, TQ3AttributeSet *attributeSet)
  510. ;
  511.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  512.         IMPORT_CFM_FUNCTION Q3View_GetAttributeSetState
  513.     ENDIF
  514.  
  515. ;
  516. ; extern TQ3Status Q3View_GetAttributeState(TQ3ViewObject view, TQ3AttributeType attributeType, void *data)
  517. ;
  518.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  519.         IMPORT_CFM_FUNCTION Q3View_GetAttributeState
  520.     ENDIF
  521.  
  522.  
  523.  
  524.     ENDIF ; __QD3DVIEW__ 
  525.  
  526.